{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import geemap\n",
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "05ac44565c1a463a832384d0ddb12f5e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output(layout=Layout(width='815px'))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "geemap.show_youtube('fDnDVuM_Ke4')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Update the geemap package\n",
    "\n",
    "If you run into errors with this notebook, please uncomment the line below to update the [geemap](https://github.com/giswqs/geemap#installation) package to the latest version from GitHub. \n",
    "Restart the Kernel (Menu -> Kernel -> Restart) to take effect."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# geemap.update_package()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Add animated text to an existing GIF\n",
    "\n",
    "You can download this GIF example from [here](https://github.com/giswqs/geemap/blob/master/examples/data/animation.gif). You can also create GIF images from Earth Engine data using this amazing [LT-GEE Time Series Animator](https://emaprlab.users.earthengine.app/view/lt-gee-time-series-animator), which was created by [Justin Braaten](https://github.com/jdbcode)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "in_gif = os.path.abspath('../data/animation.gif')\n",
    "out_gif = os.path.join(os.path.expanduser('~'), 'Downloads/output.gif')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4c59afd1c6c84d7582aaf98ea1c47142",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "geemap.show_image(in_gif)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Add animated text to GIF"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "geemap.add_text_to_gif(in_gif, out_gif, xy=('5%', '5%'), text_sequence=1984, font_size=30, font_color='#0000ff', duration=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1796835ce39344cb8a0727bc03e5c00e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "geemap.show_image(out_gif)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Add place name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "geemap.add_text_to_gif(out_gif, out_gif, xy=('30%', '85%'), text_sequence=\"Las Vegas\", font_color='black')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "94a09d95bbc74c2199b984fb9ae0db4d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "geemap.show_image(out_gif)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Change font type"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['AkaashNormal.ttf',\n",
       " 'C059-BdIta.otf',\n",
       " 'C059-Bold.otf',\n",
       " 'C059-Italic.otf',\n",
       " 'C059-Roman.otf',\n",
       " 'Cantarell-Bold.otf',\n",
       " 'Cantarell-ExtraBold.otf',\n",
       " 'Cantarell-Light.otf',\n",
       " 'Cantarell-Regular.otf',\n",
       " 'Cantarell-Thin.otf',\n",
       " 'Cantarell-VF.otf',\n",
       " 'D050000L.otf',\n",
       " 'DejaVuMathTeXGyre.ttf',\n",
       " 'DejaVuSans-Bold.ttf',\n",
       " 'DejaVuSans-BoldOblique.ttf',\n",
       " 'DejaVuSans-ExtraLight.ttf',\n",
       " 'DejaVuSans-Oblique.ttf',\n",
       " 'DejaVuSans.ttf',\n",
       " 'DejaVuSansCondensed-Bold.ttf',\n",
       " 'DejaVuSansCondensed-BoldOblique.ttf',\n",
       " 'DejaVuSansCondensed-Oblique.ttf',\n",
       " 'DejaVuSansCondensed.ttf',\n",
       " 'DejaVuSansMono-Bold.ttf',\n",
       " 'DejaVuSansMono-BoldOblique.ttf',\n",
       " 'DejaVuSansMono-Oblique.ttf',\n",
       " 'DejaVuSansMono.ttf',\n",
       " 'DejaVuSerif-Bold.ttf',\n",
       " 'DejaVuSerif-BoldItalic.ttf',\n",
       " 'DejaVuSerif-Italic.ttf',\n",
       " 'DejaVuSerif.ttf',\n",
       " 'DejaVuSerifCondensed-Bold.ttf',\n",
       " 'DejaVuSerifCondensed-BoldItalic.ttf',\n",
       " 'DejaVuSerifCondensed-Italic.ttf',\n",
       " 'DejaVuSerifCondensed.ttf',\n",
       " 'DroidKufi-Bold.ttf',\n",
       " 'DroidKufi-Regular.ttf',\n",
       " 'DroidNaskh-Bold.ttf',\n",
       " 'DroidNaskh-Regular-SystemUI.ttf',\n",
       " 'DroidNaskh-Regular.ttf',\n",
       " 'DroidSans-Bold.ttf',\n",
       " 'DroidSans-Bold.ttf',\n",
       " 'DroidSans.ttf',\n",
       " 'DroidSans.ttf',\n",
       " 'DroidSansArabic.ttf',\n",
       " 'DroidSansArmenian.ttf',\n",
       " 'DroidSansDevanagari-Regular.ttf',\n",
       " 'DroidSansEthiopic-Bold.ttf',\n",
       " 'DroidSansEthiopic-Regular.ttf',\n",
       " 'DroidSansFallback.ttf',\n",
       " 'DroidSansFallbackFull.ttf',\n",
       " 'DroidSansFallbackLegacy.ttf',\n",
       " 'DroidSansGeorgian.ttf',\n",
       " 'DroidSansHebrew-Bold.ttf',\n",
       " 'DroidSansHebrew-Regular.ttf',\n",
       " 'DroidSansJapanese.ttf',\n",
       " 'DroidSansMono.ttf',\n",
       " 'DroidSansMono.ttf',\n",
       " 'DroidSansTamil-Bold.ttf',\n",
       " 'DroidSansTamil-Regular.ttf',\n",
       " 'DroidSansThai.ttf',\n",
       " 'DroidSerif-Bold.ttf',\n",
       " 'DroidSerif-Bold.ttf',\n",
       " 'DroidSerif-BoldItalic.ttf',\n",
       " 'DroidSerif-BoldItalic.ttf',\n",
       " 'DroidSerif-Italic.ttf',\n",
       " 'DroidSerif-Italic.ttf',\n",
       " 'DroidSerif-Regular.ttf',\n",
       " 'DroidSerif.ttf',\n",
       " 'Gargi-1.2b.ttf',\n",
       " 'GurbaniBoliLite.ttf',\n",
       " 'Hack-Bold.ttf',\n",
       " 'Hack-BoldItalic.ttf',\n",
       " 'Hack-Italic.ttf',\n",
       " 'Hack-Regular.ttf',\n",
       " 'Inconsolata-Black.ttf',\n",
       " 'Inconsolata-Bold.ttf',\n",
       " 'Inconsolata-Condensed.ttf',\n",
       " 'Inconsolata-CondensedBlack.ttf',\n",
       " 'Inconsolata-CondensedBold.ttf',\n",
       " 'Inconsolata-CondensedExtraBold.ttf',\n",
       " 'Inconsolata-CondensedExtraLight.ttf',\n",
       " 'Inconsolata-CondensedLight.ttf',\n",
       " 'Inconsolata-CondensedMedium.ttf',\n",
       " 'Inconsolata-CondensedSemiBold.ttf',\n",
       " 'Inconsolata-Expanded.ttf',\n",
       " 'Inconsolata-ExpandedBlack.ttf',\n",
       " 'Inconsolata-ExpandedBold.ttf',\n",
       " 'Inconsolata-ExpandedExtraBold.ttf',\n",
       " 'Inconsolata-ExpandedExtraLight.ttf',\n",
       " 'Inconsolata-ExpandedLight.ttf',\n",
       " 'Inconsolata-ExpandedMedium.ttf',\n",
       " 'Inconsolata-ExpandedSemiBold.ttf',\n",
       " 'Inconsolata-ExtraBold.ttf',\n",
       " 'Inconsolata-ExtraCondensed.ttf',\n",
       " 'Inconsolata-ExtraCondensedBlack.ttf',\n",
       " 'Inconsolata-ExtraCondensedBold.ttf',\n",
       " 'Inconsolata-ExtraCondensedExtraBold.ttf',\n",
       " 'Inconsolata-ExtraCondensedExtraLight.ttf',\n",
       " 'Inconsolata-ExtraCondensedLight.ttf',\n",
       " 'Inconsolata-ExtraCondensedMedium.ttf',\n",
       " 'Inconsolata-ExtraCondensedSemiBold.ttf',\n",
       " 'Inconsolata-ExtraExpanded.ttf',\n",
       " 'Inconsolata-ExtraExpandedBlack.ttf',\n",
       " 'Inconsolata-ExtraExpandedBold.ttf',\n",
       " 'Inconsolata-ExtraExpandedExtraBold.ttf',\n",
       " 'Inconsolata-ExtraExpandedExtraLight.ttf',\n",
       " 'Inconsolata-ExtraExpandedLight.ttf',\n",
       " 'Inconsolata-ExtraExpandedMedium.ttf',\n",
       " 'Inconsolata-ExtraExpandedSemiBold.ttf',\n",
       " 'Inconsolata-ExtraLight.ttf',\n",
       " 'Inconsolata-Light.ttf',\n",
       " 'Inconsolata-Medium.ttf',\n",
       " 'Inconsolata-Regular.ttf',\n",
       " 'Inconsolata-SemiBold.ttf',\n",
       " 'Inconsolata-SemiCondensed.ttf',\n",
       " 'Inconsolata-SemiCondensedBlack.ttf',\n",
       " 'Inconsolata-SemiCondensedBold.ttf',\n",
       " 'Inconsolata-SemiCondensedExtraBold.ttf',\n",
       " 'Inconsolata-SemiCondensedExtraLight.ttf',\n",
       " 'Inconsolata-SemiCondensedLight.ttf',\n",
       " 'Inconsolata-SemiCondensedMedium.ttf',\n",
       " 'Inconsolata-SemiCondensedSemiBold.ttf',\n",
       " 'Inconsolata-SemiExpanded.ttf',\n",
       " 'Inconsolata-SemiExpandedBlack.ttf',\n",
       " 'Inconsolata-SemiExpandedBold.ttf',\n",
       " 'Inconsolata-SemiExpandedExtraBold.ttf',\n",
       " 'Inconsolata-SemiExpandedExtraLight.ttf',\n",
       " 'Inconsolata-SemiExpandedLight.ttf',\n",
       " 'Inconsolata-SemiExpandedMedium.ttf',\n",
       " 'Inconsolata-SemiExpandedSemiBold.ttf',\n",
       " 'Inconsolata-UltraCondensed.ttf',\n",
       " 'Inconsolata-UltraCondensedBlack.ttf',\n",
       " 'Inconsolata-UltraCondensedBold.ttf',\n",
       " 'Inconsolata-UltraCondensedExtraBold.ttf',\n",
       " 'Inconsolata-UltraCondensedExtraLight.ttf',\n",
       " 'Inconsolata-UltraCondensedLight.ttf',\n",
       " 'Inconsolata-UltraCondensedMedium.ttf',\n",
       " 'Inconsolata-UltraCondensedSemiBold.ttf',\n",
       " 'Inconsolata-UltraExpanded.ttf',\n",
       " 'Inconsolata-UltraExpandedBlack.ttf',\n",
       " 'Inconsolata-UltraExpandedBold.ttf',\n",
       " 'Inconsolata-UltraExpandedExtraBold.ttf',\n",
       " 'Inconsolata-UltraExpandedExtraLight.ttf',\n",
       " 'Inconsolata-UltraExpandedLight.ttf',\n",
       " 'Inconsolata-UltraExpandedMedium.ttf',\n",
       " 'Inconsolata-UltraExpandedSemiBold.ttf',\n",
       " 'LiberationMono-Bold.ttf',\n",
       " 'LiberationMono-BoldItalic.ttf',\n",
       " 'LiberationMono-Italic.ttf',\n",
       " 'LiberationMono-Regular.ttf',\n",
       " 'LiberationSans-Bold.ttf',\n",
       " 'LiberationSans-BoldItalic.ttf',\n",
       " 'LiberationSans-Italic.ttf',\n",
       " 'LiberationSans-Regular.ttf',\n",
       " 'LiberationSerif-Bold.ttf',\n",
       " 'LiberationSerif-BoldItalic.ttf',\n",
       " 'LiberationSerif-Italic.ttf',\n",
       " 'LiberationSerif-Regular.ttf',\n",
       " 'Ligconsolata-Bold.ttf',\n",
       " 'Ligconsolata-Regular.ttf',\n",
       " 'LikhanNormal.ttf',\n",
       " 'MalOtf.ttf',\n",
       " 'MuktiNarrow.ttf',\n",
       " 'MuktiNarrowBold.ttf',\n",
       " 'NimbusMonoPS-Bold.otf',\n",
       " 'NimbusMonoPS-BoldItalic.otf',\n",
       " 'NimbusMonoPS-Italic.otf',\n",
       " 'NimbusMonoPS-Regular.otf',\n",
       " 'NimbusRoman-Bold.otf',\n",
       " 'NimbusRoman-BoldItalic.otf',\n",
       " 'NimbusRoman-Italic.otf',\n",
       " 'NimbusRoman-Regular.otf',\n",
       " 'NimbusSans-Bold.otf',\n",
       " 'NimbusSans-BoldItalic.otf',\n",
       " 'NimbusSans-Italic.otf',\n",
       " 'NimbusSans-Regular.otf',\n",
       " 'NimbusSansNarrow-Bold.otf',\n",
       " 'NimbusSansNarrow-BoldOblique.otf',\n",
       " 'NimbusSansNarrow-Oblique.otf',\n",
       " 'NimbusSansNarrow-Regular.otf',\n",
       " 'NotoColorEmoji.ttf',\n",
       " 'NotoKufiArabic-Bold.ttf',\n",
       " 'NotoKufiArabic-Medium.ttf',\n",
       " 'NotoKufiArabic-Regular.ttf',\n",
       " 'NotoKufiArabic-Semibold.ttf',\n",
       " 'NotoMono-Regular.ttf',\n",
       " 'NotoMusic-Regular.ttf',\n",
       " 'NotoNaskhArabic-Bold.ttf',\n",
       " 'NotoNaskhArabic-Regular.ttf',\n",
       " 'NotoNaskhArabicUI-Bold.ttf',\n",
       " 'NotoNaskhArabicUI-Regular.ttf',\n",
       " 'NotoNastaliqUrdu-Bold.ttf',\n",
       " 'NotoNastaliqUrdu-Regular.ttf',\n",
       " 'NotoSans-Black.ttf',\n",
       " 'NotoSans-BlackItalic.ttf',\n",
       " 'NotoSans-Bold.ttf',\n",
       " 'NotoSans-BoldItalic.ttf',\n",
       " 'NotoSans-Italic.ttf',\n",
       " 'NotoSans-Light.ttf',\n",
       " 'NotoSans-LightItalic.ttf',\n",
       " 'NotoSans-Medium.ttf',\n",
       " 'NotoSans-MediumItalic.ttf',\n",
       " 'NotoSans-Regular.ttf',\n",
       " 'NotoSans-Thin.ttf',\n",
       " 'NotoSans-ThinItalic.ttf',\n",
       " 'NotoSansAdlam-Regular.ttf',\n",
       " 'NotoSansAdlamUnjoined-Regular.ttf',\n",
       " 'NotoSansAnatolianHieroglyphs-Regular.ttf',\n",
       " 'NotoSansArabic-Black.ttf',\n",
       " 'NotoSansArabic-Bold.ttf',\n",
       " 'NotoSansArabic-Light.ttf',\n",
       " 'NotoSansArabic-Medium.ttf',\n",
       " 'NotoSansArabic-Regular.ttf',\n",
       " 'NotoSansArabic-Thin.ttf',\n",
       " 'NotoSansArabicUI-Black.ttf',\n",
       " 'NotoSansArabicUI-Bold.ttf',\n",
       " 'NotoSansArabicUI-Light.ttf',\n",
       " 'NotoSansArabicUI-Medium.ttf',\n",
       " 'NotoSansArabicUI-Regular.ttf',\n",
       " 'NotoSansArabicUI-Thin.ttf',\n",
       " 'NotoSansArmenian-Black.ttf',\n",
       " 'NotoSansArmenian-Bold.ttf',\n",
       " 'NotoSansArmenian-Light.ttf',\n",
       " 'NotoSansArmenian-Medium.ttf',\n",
       " 'NotoSansArmenian-Regular.ttf',\n",
       " 'NotoSansArmenian-Thin.ttf',\n",
       " 'NotoSansAvestan-Regular.ttf',\n",
       " 'NotoSansBamum-Regular.ttf',\n",
       " 'NotoSansBassaVah-Regular.ttf',\n",
       " 'NotoSansBatak-Regular.ttf',\n",
       " 'NotoSansBengali-Black.ttf',\n",
       " 'NotoSansBengali-Bold.ttf',\n",
       " 'NotoSansBengali-Light.ttf',\n",
       " 'NotoSansBengali-Medium.ttf',\n",
       " 'NotoSansBengali-Regular.ttf',\n",
       " 'NotoSansBengali-Thin.ttf',\n",
       " 'NotoSansBengaliUI-Black.ttf',\n",
       " 'NotoSansBengaliUI-Bold.ttf',\n",
       " 'NotoSansBengaliUI-Light.ttf',\n",
       " 'NotoSansBengaliUI-Medium.ttf',\n",
       " 'NotoSansBengaliUI-Regular.ttf',\n",
       " 'NotoSansBengaliUI-Thin.ttf',\n",
       " 'NotoSansBhaiksuki-Regular.ttf',\n",
       " 'NotoSansBrahmi-Regular.ttf',\n",
       " 'NotoSansBuginese-Regular.ttf',\n",
       " 'NotoSansBuhid-Regular.ttf',\n",
       " 'NotoSansCanadianAboriginal-Black.ttf',\n",
       " 'NotoSansCanadianAboriginal-Bold.ttf',\n",
       " 'NotoSansCanadianAboriginal-Light.ttf',\n",
       " 'NotoSansCanadianAboriginal-Medium.ttf',\n",
       " 'NotoSansCanadianAboriginal-Regular.ttf',\n",
       " 'NotoSansCanadianAboriginal-Thin.ttf',\n",
       " 'NotoSansCarian-Regular.ttf',\n",
       " 'NotoSansCaucasianAlbanian-Regular.ttf',\n",
       " 'NotoSansChakma-Regular.ttf',\n",
       " 'NotoSansCham-Black.ttf',\n",
       " 'NotoSansCham-Bold.ttf',\n",
       " 'NotoSansCham-Light.ttf',\n",
       " 'NotoSansCham-Medium.ttf',\n",
       " 'NotoSansCham-Regular.ttf',\n",
       " 'NotoSansCham-Thin.ttf',\n",
       " 'NotoSansCherokee-Black.ttf',\n",
       " 'NotoSansCherokee-Bold.ttf',\n",
       " 'NotoSansCherokee-Light.ttf',\n",
       " 'NotoSansCherokee-Medium.ttf',\n",
       " 'NotoSansCherokee-Regular.ttf',\n",
       " 'NotoSansCherokee-Thin.ttf',\n",
       " 'NotoSansCoptic-Regular.ttf',\n",
       " 'NotoSansCuneiform-Regular.ttf',\n",
       " 'NotoSansCypriot-Regular.ttf',\n",
       " 'NotoSansDeseret-Regular.ttf',\n",
       " 'NotoSansDevanagari-Black.ttf',\n",
       " 'NotoSansDevanagari-Bold.ttf',\n",
       " 'NotoSansDevanagari-Light.ttf',\n",
       " 'NotoSansDevanagari-Medium.ttf',\n",
       " 'NotoSansDevanagari-Regular.ttf',\n",
       " 'NotoSansDevanagari-Thin.ttf',\n",
       " 'NotoSansDevanagariUI-Black.ttf',\n",
       " 'NotoSansDevanagariUI-Bold.ttf',\n",
       " 'NotoSansDevanagariUI-Light.ttf',\n",
       " 'NotoSansDevanagariUI-Medium.ttf',\n",
       " 'NotoSansDevanagariUI-Regular.ttf',\n",
       " 'NotoSansDevanagariUI-Thin.ttf',\n",
       " 'NotoSansDisplay-Black.ttf',\n",
       " 'NotoSansDisplay-BlackItalic.ttf',\n",
       " 'NotoSansDisplay-Bold.ttf',\n",
       " 'NotoSansDisplay-BoldItalic.ttf',\n",
       " 'NotoSansDisplay-Italic.ttf',\n",
       " 'NotoSansDisplay-Light.ttf',\n",
       " 'NotoSansDisplay-LightItalic.ttf',\n",
       " 'NotoSansDisplay-Medium.ttf',\n",
       " 'NotoSansDisplay-MediumItalic.ttf',\n",
       " 'NotoSansDisplay-Regular.ttf',\n",
       " 'NotoSansDisplay-Thin.ttf',\n",
       " 'NotoSansDisplay-ThinItalic.ttf',\n",
       " 'NotoSansDuployan-Regular.ttf',\n",
       " 'NotoSansEgyptianHieroglyphs-Regular.ttf',\n",
       " 'NotoSansElbasan-Regular.ttf',\n",
       " 'NotoSansEthiopic-Black.ttf',\n",
       " 'NotoSansEthiopic-Bold.ttf',\n",
       " 'NotoSansEthiopic-Light.ttf',\n",
       " 'NotoSansEthiopic-Medium.ttf',\n",
       " 'NotoSansEthiopic-Regular.ttf',\n",
       " 'NotoSansEthiopic-Thin.ttf',\n",
       " 'NotoSansGeorgian-Black.ttf',\n",
       " 'NotoSansGeorgian-Bold.ttf',\n",
       " 'NotoSansGeorgian-Light.ttf',\n",
       " 'NotoSansGeorgian-Medium.ttf',\n",
       " 'NotoSansGeorgian-Regular.ttf',\n",
       " 'NotoSansGeorgian-Thin.ttf',\n",
       " 'NotoSansGlagolitic-Regular.ttf',\n",
       " 'NotoSansGothic-Regular.ttf',\n",
       " 'NotoSansGrantha-Regular.ttf',\n",
       " 'NotoSansGujarati-Bold.ttf',\n",
       " 'NotoSansGujarati-Regular.ttf',\n",
       " 'NotoSansGujaratiUI-Bold.ttf',\n",
       " 'NotoSansGujaratiUI-Regular.ttf',\n",
       " 'NotoSansGurmukhi-Black.ttf',\n",
       " 'NotoSansGurmukhi-Bold.ttf',\n",
       " 'NotoSansGurmukhi-Light.ttf',\n",
       " 'NotoSansGurmukhi-Medium.ttf',\n",
       " 'NotoSansGurmukhi-Regular.ttf',\n",
       " 'NotoSansGurmukhi-Thin.ttf',\n",
       " 'NotoSansGurmukhiUI-Black.ttf',\n",
       " 'NotoSansGurmukhiUI-Bold.ttf',\n",
       " 'NotoSansGurmukhiUI-Light.ttf',\n",
       " 'NotoSansGurmukhiUI-Medium.ttf',\n",
       " 'NotoSansGurmukhiUI-Regular.ttf',\n",
       " 'NotoSansGurmukhiUI-Thin.ttf',\n",
       " 'NotoSansHanifiRohingya-Regular.ttf',\n",
       " 'NotoSansHanunoo-Regular.ttf',\n",
       " 'NotoSansHatran-Regular.ttf',\n",
       " 'NotoSansHebrew-Black.ttf',\n",
       " 'NotoSansHebrew-Bold.ttf',\n",
       " 'NotoSansHebrew-Light.ttf',\n",
       " 'NotoSansHebrew-Medium.ttf',\n",
       " 'NotoSansHebrew-Regular.ttf',\n",
       " 'NotoSansHebrew-Thin.ttf',\n",
       " 'NotoSansImperialAramaic-Regular.ttf',\n",
       " 'NotoSansIndicSiyaqNumbers-Regular.ttf',\n",
       " 'NotoSansInscriptionalPahlavi-Regular.ttf',\n",
       " 'NotoSansInscriptionalParthian-Regular.ttf',\n",
       " 'NotoSansJavanese-Bold.ttf',\n",
       " 'NotoSansJavanese-Regular.ttf',\n",
       " 'NotoSansKaithi-Regular.ttf',\n",
       " 'NotoSansKannada-Black.ttf',\n",
       " 'NotoSansKannada-Bold.ttf',\n",
       " 'NotoSansKannada-Light.ttf',\n",
       " 'NotoSansKannada-Medium.ttf',\n",
       " 'NotoSansKannada-Regular.ttf',\n",
       " 'NotoSansKannada-Thin.ttf',\n",
       " 'NotoSansKannadaUI-Black.ttf',\n",
       " 'NotoSansKannadaUI-Bold.ttf',\n",
       " 'NotoSansKannadaUI-Light.ttf',\n",
       " 'NotoSansKannadaUI-Medium.ttf',\n",
       " 'NotoSansKannadaUI-Regular.ttf',\n",
       " 'NotoSansKannadaUI-Thin.ttf',\n",
       " 'NotoSansKayahLi-Regular.ttf',\n",
       " 'NotoSansKharoshthi-Regular.ttf',\n",
       " 'NotoSansKhmer-Black.ttf',\n",
       " 'NotoSansKhmer-Bold.ttf',\n",
       " 'NotoSansKhmer-Light.ttf',\n",
       " 'NotoSansKhmer-Medium.ttf',\n",
       " 'NotoSansKhmer-Regular.ttf',\n",
       " 'NotoSansKhmer-Thin.ttf',\n",
       " 'NotoSansKhmerUI-Black.ttf',\n",
       " 'NotoSansKhmerUI-Bold.ttf',\n",
       " 'NotoSansKhmerUI-Light.ttf',\n",
       " 'NotoSansKhmerUI-Medium.ttf',\n",
       " 'NotoSansKhmerUI-Regular.ttf',\n",
       " 'NotoSansKhmerUI-Thin.ttf',\n",
       " 'NotoSansKhojki-Regular.ttf',\n",
       " 'NotoSansKhudawadi-Regular.ttf',\n",
       " 'NotoSansLao-Black.ttf',\n",
       " 'NotoSansLao-Bold.ttf',\n",
       " 'NotoSansLao-Light.ttf',\n",
       " 'NotoSansLao-Medium.ttf',\n",
       " 'NotoSansLao-Regular.ttf',\n",
       " 'NotoSansLao-Thin.ttf',\n",
       " 'NotoSansLaoUI-Black.ttf',\n",
       " 'NotoSansLaoUI-Bold.ttf',\n",
       " 'NotoSansLaoUI-Light.ttf',\n",
       " 'NotoSansLaoUI-Medium.ttf',\n",
       " 'NotoSansLaoUI-Regular.ttf',\n",
       " 'NotoSansLaoUI-Thin.ttf',\n",
       " 'NotoSansLepcha-Regular.ttf',\n",
       " 'NotoSansLimbu-Regular.ttf',\n",
       " 'NotoSansLinearA-Regular.ttf',\n",
       " 'NotoSansLinearB-Regular.ttf',\n",
       " 'NotoSansLisu-Regular.ttf',\n",
       " 'NotoSansLycian-Regular.ttf',\n",
       " 'NotoSansLydian-Regular.ttf',\n",
       " 'NotoSansMahajani-Regular.ttf',\n",
       " 'NotoSansMalayalam-Black.ttf',\n",
       " 'NotoSansMalayalam-Bold.ttf',\n",
       " 'NotoSansMalayalam-Light.ttf',\n",
       " 'NotoSansMalayalam-Medium.ttf',\n",
       " 'NotoSansMalayalam-Regular.ttf',\n",
       " 'NotoSansMalayalam-Thin.ttf',\n",
       " 'NotoSansMalayalamUI-Black.ttf',\n",
       " 'NotoSansMalayalamUI-Bold.ttf',\n",
       " 'NotoSansMalayalamUI-Light.ttf',\n",
       " 'NotoSansMalayalamUI-Medium.ttf',\n",
       " 'NotoSansMalayalamUI-Regular.ttf',\n",
       " 'NotoSansMalayalamUI-Thin.ttf',\n",
       " 'NotoSansMandaic-Regular.ttf',\n",
       " 'NotoSansManichaean-Regular.ttf',\n",
       " 'NotoSansMarchen-Regular.ttf',\n",
       " 'NotoSansMath-Regular.ttf',\n",
       " 'NotoSansMayanNumerals-Regular.ttf',\n",
       " 'NotoSansMeeteiMayek-Regular.ttf',\n",
       " 'NotoSansMendeKikakui-Regular.ttf',\n",
       " 'NotoSansMeroitic-Regular.ttf',\n",
       " 'NotoSansMiao-Regular.ttf',\n",
       " 'NotoSansModi-Regular.ttf',\n",
       " 'NotoSansMongolian-Regular.ttf',\n",
       " 'NotoSansMono-Black.ttf',\n",
       " 'NotoSansMono-Bold.ttf',\n",
       " 'NotoSansMono-Light.ttf',\n",
       " 'NotoSansMono-Medium.ttf',\n",
       " 'NotoSansMono-Regular.ttf',\n",
       " 'NotoSansMono-Thin.ttf',\n",
       " 'NotoSansMro-Regular.ttf',\n",
       " 'NotoSansMultani-Regular.ttf',\n",
       " 'NotoSansMyanmar-Black.ttf',\n",
       " 'NotoSansMyanmar-Bold.ttf',\n",
       " 'NotoSansMyanmar-Light.ttf',\n",
       " 'NotoSansMyanmar-Medium.ttf',\n",
       " 'NotoSansMyanmar-Regular.ttf',\n",
       " 'NotoSansMyanmar-Thin.ttf',\n",
       " 'NotoSansMyanmarUI-Black.ttf',\n",
       " 'NotoSansMyanmarUI-Bold.ttf',\n",
       " 'NotoSansMyanmarUI-Light.ttf',\n",
       " 'NotoSansMyanmarUI-Medium.ttf',\n",
       " 'NotoSansMyanmarUI-Regular.ttf',\n",
       " 'NotoSansMyanmarUI-Thin.ttf',\n",
       " 'NotoSansNKo-Regular.ttf',\n",
       " 'NotoSansNabataean-Regular.ttf',\n",
       " 'NotoSansNewTaiLue-Regular.ttf',\n",
       " 'NotoSansNewa-Regular.ttf',\n",
       " 'NotoSansOgham-Regular.ttf',\n",
       " 'NotoSansOlChiki-Regular.ttf',\n",
       " 'NotoSansOldHungarian-Regular.ttf',\n",
       " 'NotoSansOldItalic-Regular.ttf',\n",
       " 'NotoSansOldNorthArabian-Regular.ttf',\n",
       " 'NotoSansOldPermic-Regular.ttf',\n",
       " 'NotoSansOldPersian-Regular.ttf',\n",
       " 'NotoSansOldSogdian-Regular.ttf',\n",
       " 'NotoSansOldSouthArabian-Regular.ttf',\n",
       " 'NotoSansOldTurkic-Regular.ttf',\n",
       " 'NotoSansOriya-Bold.ttf',\n",
       " 'NotoSansOriya-Regular.ttf',\n",
       " 'NotoSansOriyaUI-Bold.ttf',\n",
       " 'NotoSansOriyaUI-Regular.ttf',\n",
       " 'NotoSansOsage-Regular.ttf',\n",
       " 'NotoSansOsmanya-Regular.ttf',\n",
       " 'NotoSansPahawhHmong-Regular.ttf',\n",
       " 'NotoSansPalmyrene-Regular.ttf',\n",
       " 'NotoSansPauCinHau-Regular.ttf',\n",
       " 'NotoSansPhagsPa-Regular.ttf',\n",
       " 'NotoSansPhoenician-Regular.ttf',\n",
       " 'NotoSansPsalterPahlavi-Regular.ttf',\n",
       " 'NotoSansRejang-Regular.ttf',\n",
       " 'NotoSansRunic-Regular.ttf',\n",
       " 'NotoSansSamaritan-Regular.ttf',\n",
       " 'NotoSansSaurashtra-Regular.ttf',\n",
       " 'NotoSansSharada-Regular.ttf',\n",
       " 'NotoSansShavian-Regular.ttf',\n",
       " 'NotoSansSiddham-Regular.ttf',\n",
       " 'NotoSansSinhala-Black.ttf',\n",
       " 'NotoSansSinhala-Bold.ttf',\n",
       " 'NotoSansSinhala-Light.ttf',\n",
       " 'NotoSansSinhala-Medium.ttf',\n",
       " 'NotoSansSinhala-Regular.ttf',\n",
       " 'NotoSansSinhala-Thin.ttf',\n",
       " 'NotoSansSinhalaUI-Black.ttf',\n",
       " 'NotoSansSinhalaUI-Bold.ttf',\n",
       " 'NotoSansSinhalaUI-Light.ttf',\n",
       " 'NotoSansSinhalaUI-Medium.ttf',\n",
       " 'NotoSansSinhalaUI-Regular.ttf',\n",
       " 'NotoSansSinhalaUI-Thin.ttf',\n",
       " 'NotoSansSoraSompeng-Regular.ttf',\n",
       " 'NotoSansSundanese-Regular.ttf',\n",
       " 'NotoSansSylotiNagri-Regular.ttf',\n",
       " 'NotoSansSymbols-Black.ttf',\n",
       " 'NotoSansSymbols-Bold.ttf',\n",
       " 'NotoSansSymbols-Light.ttf',\n",
       " 'NotoSansSymbols-Medium.ttf',\n",
       " 'NotoSansSymbols-Regular.ttf',\n",
       " 'NotoSansSymbols-Thin.ttf',\n",
       " 'NotoSansSymbols2-Regular.ttf',\n",
       " 'NotoSansSyriac-Black.ttf',\n",
       " 'NotoSansSyriac-Regular.ttf',\n",
       " 'NotoSansSyriac-Thin.ttf',\n",
       " 'NotoSansTagalog-Regular.ttf',\n",
       " 'NotoSansTagbanwa-Regular.ttf',\n",
       " 'NotoSansTaiLe-Regular.ttf',\n",
       " 'NotoSansTaiTham-Regular.ttf',\n",
       " 'NotoSansTaiViet-Regular.ttf',\n",
       " 'NotoSansTakri-Regular.ttf',\n",
       " 'NotoSansTamil-Black.ttf',\n",
       " 'NotoSansTamil-Bold.ttf',\n",
       " 'NotoSansTamil-Light.ttf',\n",
       " 'NotoSansTamil-Medium.ttf',\n",
       " 'NotoSansTamil-Regular.ttf',\n",
       " 'NotoSansTamil-Thin.ttf',\n",
       " 'NotoSansTamilSupplement-Regular.ttf',\n",
       " 'NotoSansTamilUI-Black.ttf',\n",
       " 'NotoSansTamilUI-Bold.ttf',\n",
       " 'NotoSansTamilUI-Light.ttf',\n",
       " 'NotoSansTamilUI-Medium.ttf',\n",
       " 'NotoSansTamilUI-Regular.ttf',\n",
       " 'NotoSansTamilUI-Thin.ttf',\n",
       " 'NotoSansTelugu-Black.ttf',\n",
       " 'NotoSansTelugu-Bold.ttf',\n",
       " 'NotoSansTelugu-Light.ttf',\n",
       " 'NotoSansTelugu-Medium.ttf',\n",
       " 'NotoSansTelugu-Regular.ttf',\n",
       " 'NotoSansTelugu-Thin.ttf',\n",
       " 'NotoSansTeluguUI-Black.ttf',\n",
       " 'NotoSansTeluguUI-Bold.ttf',\n",
       " 'NotoSansTeluguUI-Light.ttf',\n",
       " 'NotoSansTeluguUI-Medium.ttf',\n",
       " 'NotoSansTeluguUI-Regular.ttf',\n",
       " 'NotoSansTeluguUI-Thin.ttf',\n",
       " 'NotoSansThaana-Black.ttf',\n",
       " 'NotoSansThaana-Bold.ttf',\n",
       " 'NotoSansThaana-Light.ttf',\n",
       " 'NotoSansThaana-Medium.ttf',\n",
       " 'NotoSansThaana-Regular.ttf',\n",
       " 'NotoSansThaana-Thin.ttf',\n",
       " 'NotoSansThai-Black.ttf',\n",
       " 'NotoSansThai-Bold.ttf',\n",
       " 'NotoSansThai-Light.ttf',\n",
       " 'NotoSansThai-Medium.ttf',\n",
       " 'NotoSansThai-Regular.ttf',\n",
       " 'NotoSansThai-Thin.ttf',\n",
       " 'NotoSansThaiUI-Black.ttf',\n",
       " 'NotoSansThaiUI-Bold.ttf',\n",
       " 'NotoSansThaiUI-Light.ttf',\n",
       " 'NotoSansThaiUI-Medium.ttf',\n",
       " 'NotoSansThaiUI-Regular.ttf',\n",
       " 'NotoSansThaiUI-Thin.ttf',\n",
       " 'NotoSansTibetan-Bold.ttf',\n",
       " 'NotoSansTibetan-Regular.ttf',\n",
       " 'NotoSansTifinagh-Regular.ttf',\n",
       " 'NotoSansTirhuta-Regular.ttf',\n",
       " 'NotoSansUgaritic-Regular.ttf',\n",
       " 'NotoSansVai-Regular.ttf',\n",
       " 'NotoSansWarangCiti-Regular.ttf',\n",
       " 'NotoSansYi-Regular.ttf',\n",
       " 'NotoSerif-Black.ttf',\n",
       " 'NotoSerif-BlackItalic.ttf',\n",
       " 'NotoSerif-Bold.ttf',\n",
       " 'NotoSerif-BoldItalic.ttf',\n",
       " 'NotoSerif-Italic.ttf',\n",
       " 'NotoSerif-Light.ttf',\n",
       " 'NotoSerif-LightItalic.ttf',\n",
       " 'NotoSerif-Medium.ttf',\n",
       " 'NotoSerif-MediumItalic.ttf',\n",
       " 'NotoSerif-Regular.ttf',\n",
       " 'NotoSerif-Thin.ttf',\n",
       " 'NotoSerif-ThinItalic.ttf',\n",
       " 'NotoSerifAhom-Regular.ttf',\n",
       " 'NotoSerifArmenian-Black.ttf',\n",
       " 'NotoSerifArmenian-Bold.ttf',\n",
       " 'NotoSerifArmenian-Light.ttf',\n",
       " 'NotoSerifArmenian-Medium.ttf',\n",
       " 'NotoSerifArmenian-Regular.ttf',\n",
       " 'NotoSerifArmenian-Thin.ttf',\n",
       " 'NotoSerifBalinese-Regular.ttf',\n",
       " 'NotoSerifBengali-Black.ttf',\n",
       " 'NotoSerifBengali-Bold.ttf',\n",
       " 'NotoSerifBengali-Light.ttf',\n",
       " 'NotoSerifBengali-Medium.ttf',\n",
       " 'NotoSerifBengali-Regular.ttf',\n",
       " 'NotoSerifBengali-Thin.ttf',\n",
       " 'NotoSerifDevanagari-Black.ttf',\n",
       " 'NotoSerifDevanagari-Bold.ttf',\n",
       " 'NotoSerifDevanagari-Light.ttf',\n",
       " 'NotoSerifDevanagari-Medium.ttf',\n",
       " 'NotoSerifDevanagari-Regular.ttf',\n",
       " 'NotoSerifDevanagari-Thin.ttf',\n",
       " 'NotoSerifDisplay-Black.ttf',\n",
       " 'NotoSerifDisplay-BlackItalic.ttf',\n",
       " 'NotoSerifDisplay-Bold.ttf',\n",
       " 'NotoSerifDisplay-BoldItalic.ttf',\n",
       " 'NotoSerifDisplay-Italic.ttf',\n",
       " 'NotoSerifDisplay-Light.ttf',\n",
       " 'NotoSerifDisplay-LightItalic.ttf',\n",
       " 'NotoSerifDisplay-Medium.ttf',\n",
       " 'NotoSerifDisplay-MediumItalic.ttf',\n",
       " 'NotoSerifDisplay-Regular.ttf',\n",
       " 'NotoSerifDisplay-Thin.ttf',\n",
       " 'NotoSerifDisplay-ThinItalic.ttf',\n",
       " 'NotoSerifDogra-Regular.ttf',\n",
       " 'NotoSerifEthiopic-Black.ttf',\n",
       " 'NotoSerifEthiopic-Bold.ttf',\n",
       " 'NotoSerifEthiopic-Light.ttf',\n",
       " 'NotoSerifEthiopic-Medium.ttf',\n",
       " 'NotoSerifEthiopic-Regular.ttf',\n",
       " 'NotoSerifEthiopic-Thin.ttf',\n",
       " 'NotoSerifGeorgian-Black.ttf',\n",
       " 'NotoSerifGeorgian-Bold.ttf',\n",
       " 'NotoSerifGeorgian-Light.ttf',\n",
       " 'NotoSerifGeorgian-Medium.ttf',\n",
       " 'NotoSerifGeorgian-Regular.ttf',\n",
       " 'NotoSerifGeorgian-Thin.ttf',\n",
       " 'NotoSerifGujarati-Black.ttf',\n",
       " 'NotoSerifGujarati-Bold.ttf',\n",
       " 'NotoSerifGujarati-Light.ttf',\n",
       " 'NotoSerifGujarati-Medium.ttf',\n",
       " 'NotoSerifGujarati-Regular.ttf',\n",
       " 'NotoSerifGujarati-Thin.ttf',\n",
       " 'NotoSerifGurmukhi-Black.ttf',\n",
       " 'NotoSerifGurmukhi-Bold.ttf',\n",
       " 'NotoSerifGurmukhi-Light.ttf',\n",
       " 'NotoSerifGurmukhi-Medium.ttf',\n",
       " 'NotoSerifGurmukhi-Regular.ttf',\n",
       " 'NotoSerifGurmukhi-Thin.ttf',\n",
       " 'NotoSerifHebrew-Black.ttf',\n",
       " 'NotoSerifHebrew-Bold.ttf',\n",
       " 'NotoSerifHebrew-Light.ttf',\n",
       " 'NotoSerifHebrew-Medium.ttf',\n",
       " 'NotoSerifHebrew-Regular.ttf',\n",
       " 'NotoSerifHebrew-Thin.ttf',\n",
       " 'NotoSerifKannada-Black.ttf',\n",
       " 'NotoSerifKannada-Bold.ttf',\n",
       " 'NotoSerifKannada-Light.ttf',\n",
       " 'NotoSerifKannada-Medium.ttf',\n",
       " 'NotoSerifKannada-Regular.ttf',\n",
       " 'NotoSerifKannada-Thin.ttf',\n",
       " 'NotoSerifKhmer-Black.ttf',\n",
       " 'NotoSerifKhmer-Bold.ttf',\n",
       " 'NotoSerifKhmer-Light.ttf',\n",
       " 'NotoSerifKhmer-Medium.ttf',\n",
       " 'NotoSerifKhmer-Regular.ttf',\n",
       " 'NotoSerifKhmer-Thin.ttf',\n",
       " 'NotoSerifLao-Black.ttf',\n",
       " 'NotoSerifLao-Bold.ttf',\n",
       " 'NotoSerifLao-Light.ttf',\n",
       " 'NotoSerifLao-Medium.ttf',\n",
       " 'NotoSerifLao-Regular.ttf',\n",
       " 'NotoSerifLao-Thin.ttf',\n",
       " 'NotoSerifMalayalam-Black.ttf',\n",
       " 'NotoSerifMalayalam-Bold.ttf',\n",
       " 'NotoSerifMalayalam-Light.ttf',\n",
       " 'NotoSerifMalayalam-Medium.ttf',\n",
       " 'NotoSerifMalayalam-Regular.ttf',\n",
       " 'NotoSerifMalayalam-Thin.ttf',\n",
       " 'NotoSerifMyanmar-Black.ttf',\n",
       " 'NotoSerifMyanmar-Bold.ttf',\n",
       " 'NotoSerifMyanmar-Light.ttf',\n",
       " 'NotoSerifMyanmar-Medium.ttf',\n",
       " 'NotoSerifMyanmar-Regular.ttf',\n",
       " 'NotoSerifMyanmar-Thin.ttf',\n",
       " 'NotoSerifSinhala-Black.ttf',\n",
       " 'NotoSerifSinhala-Bold.ttf',\n",
       " 'NotoSerifSinhala-Light.ttf',\n",
       " 'NotoSerifSinhala-Medium.ttf',\n",
       " 'NotoSerifSinhala-Regular.ttf',\n",
       " 'NotoSerifSinhala-Thin.ttf',\n",
       " 'NotoSerifTamil-Black.ttf',\n",
       " 'NotoSerifTamil-Bold.ttf',\n",
       " 'NotoSerifTamil-Light.ttf',\n",
       " 'NotoSerifTamil-Medium.ttf',\n",
       " 'NotoSerifTamil-Regular.ttf',\n",
       " 'NotoSerifTamil-Thin.ttf',\n",
       " 'NotoSerifTamilSlanted-Black.ttf',\n",
       " 'NotoSerifTamilSlanted-Bold.ttf',\n",
       " 'NotoSerifTamilSlanted-Light.ttf',\n",
       " 'NotoSerifTamilSlanted-Medium.ttf',\n",
       " 'NotoSerifTamilSlanted-Regular.ttf',\n",
       " 'NotoSerifTamilSlanted-Thin.ttf',\n",
       " 'NotoSerifTangut-Regular.ttf',\n",
       " 'NotoSerifTelugu-Black.ttf',\n",
       " 'NotoSerifTelugu-Bold.ttf',\n",
       " 'NotoSerifTelugu-Light.ttf',\n",
       " 'NotoSerifTelugu-Medium.ttf',\n",
       " 'NotoSerifTelugu-Regular.ttf',\n",
       " 'NotoSerifTelugu-Thin.ttf',\n",
       " 'NotoSerifThai-Black.ttf',\n",
       " 'NotoSerifThai-Bold.ttf',\n",
       " 'NotoSerifThai-Light.ttf',\n",
       " 'NotoSerifThai-Medium.ttf',\n",
       " 'NotoSerifThai-Regular.ttf',\n",
       " 'NotoSerifThai-Thin.ttf',\n",
       " 'NotoSerifTibetan-Black.ttf',\n",
       " 'NotoSerifTibetan-Bold.ttf',\n",
       " 'NotoSerifTibetan-Light.ttf',\n",
       " 'NotoSerifTibetan-Medium.ttf',\n",
       " 'NotoSerifTibetan-Regular.ttf',\n",
       " 'NotoSerifTibetan-Thin.ttf',\n",
       " 'OpenSans-Bold.ttf',\n",
       " 'OpenSans-BoldItalic.ttf',\n",
       " 'OpenSans-ExtraBold.ttf',\n",
       " 'OpenSans-ExtraBoldItalic.ttf',\n",
       " 'OpenSans-Italic.ttf',\n",
       " 'OpenSans-Light.ttf',\n",
       " 'OpenSans-LightItalic.ttf',\n",
       " 'OpenSans-Regular.ttf',\n",
       " 'OpenSans-SemiBold.ttf',\n",
       " 'OpenSans-SemiBoldItalic.ttf',\n",
       " 'OpenSansCondensed-Bold.ttf',\n",
       " 'OpenSansCondensed-Light.ttf',\n",
       " 'OpenSansCondensed-LightItalic.ttf',\n",
       " 'P052-Bold.otf',\n",
       " 'P052-BoldItalic.otf',\n",
       " 'P052-Italic.otf',\n",
       " 'P052-Roman.otf',\n",
       " 'Pothana2000.ttf',\n",
       " 'SagarNormal.ttf',\n",
       " 'Sampige.ttf',\n",
       " 'SourceCodePro-Black.otf',\n",
       " 'SourceCodePro-BlackIt.otf',\n",
       " 'SourceCodePro-Bold.otf',\n",
       " 'SourceCodePro-BoldIt.otf',\n",
       " 'SourceCodePro-ExtraLight.otf',\n",
       " 'SourceCodePro-ExtraLightIt.otf',\n",
       " 'SourceCodePro-It.otf',\n",
       " 'SourceCodePro-Light.otf',\n",
       " 'SourceCodePro-LightIt.otf',\n",
       " 'SourceCodePro-Medium.otf',\n",
       " 'SourceCodePro-MediumIt.otf',\n",
       " 'SourceCodePro-Regular.otf',\n",
       " 'SourceCodePro-Semibold.otf',\n",
       " 'SourceCodePro-SemiboldIt.otf',\n",
       " 'SourceCodeVariable-Italic.otf',\n",
       " 'SourceCodeVariable-Roman.otf',\n",
       " 'SourceHanSansCN-Bold.otf',\n",
       " 'SourceHanSansCN-ExtraLight.otf',\n",
       " 'SourceHanSansCN-Heavy.otf',\n",
       " 'SourceHanSansCN-Light.otf',\n",
       " 'SourceHanSansCN-Medium.otf',\n",
       " 'SourceHanSansCN-Normal.otf',\n",
       " 'SourceHanSansCN-Regular.otf',\n",
       " 'SourceHanSerifCN-Bold.otf',\n",
       " 'SourceHanSerifCN-ExtraLight.otf',\n",
       " 'SourceHanSerifCN-Heavy.otf',\n",
       " 'SourceHanSerifCN-Light.otf',\n",
       " 'SourceHanSerifCN-Medium.otf',\n",
       " 'SourceHanSerifCN-Regular.otf',\n",
       " 'SourceHanSerifCN-SemiBold.otf',\n",
       " 'StandardSymbolsPS.otf',\n",
       " 'TAMu_Kadampari.ttf',\n",
       " 'TAMu_Kalyani.ttf',\n",
       " 'TAMu_Maduram.ttf',\n",
       " 'TSCu_Comic.ttf',\n",
       " 'TSCu_Paranar.ttf',\n",
       " 'TSCu_Times.ttf',\n",
       " 'TSCu_paranarb.ttf',\n",
       " 'TSCu_paranari.ttf',\n",
       " 'URWBookman-Demi.otf',\n",
       " 'URWBookman-DemiItalic.otf',\n",
       " 'URWBookman-Light.otf',\n",
       " 'URWBookman-LightItalic.otf',\n",
       " 'URWGothic-Book.otf',\n",
       " 'URWGothic-BookOblique.otf',\n",
       " 'URWGothic-Demi.otf',\n",
       " 'URWGothic-DemiOblique.otf',\n",
       " 'Vera.ttf',\n",
       " 'VeraBI.ttf',\n",
       " 'VeraBd.ttf',\n",
       " 'VeraIt.ttf',\n",
       " 'VeraMoBI.ttf',\n",
       " 'VeraMoBd.ttf',\n",
       " 'VeraMoIt.ttf',\n",
       " 'VeraMono.ttf',\n",
       " 'VeraSe.ttf',\n",
       " 'VeraSeBd.ttf',\n",
       " 'Z003-MediumItalic.otf',\n",
       " 'akruti1.ttf',\n",
       " 'akruti1b.ttf',\n",
       " 'akruti2.ttf',\n",
       " 'akruti2b.ttf',\n",
       " 'andalemo.ttf',\n",
       " 'ani.ttf',\n",
       " 'arial.ttf',\n",
       " 'arialbd.ttf',\n",
       " 'arialbi.ttf',\n",
       " 'ariali.ttf',\n",
       " 'ariblk.ttf',\n",
       " 'comic.ttf',\n",
       " 'comicbd.ttf',\n",
       " 'cour.ttf',\n",
       " 'courbd.ttf',\n",
       " 'courbi.ttf',\n",
       " 'couri.ttf',\n",
       " 'gbolilite.ttf',\n",
       " 'georgia.ttf',\n",
       " 'georgiab.ttf',\n",
       " 'georgiai.ttf',\n",
       " 'georgiaz.ttf',\n",
       " 'impact.ttf',\n",
       " 'mal1-b.ttf',\n",
       " 'mal1-n.ttf',\n",
       " 'mal2-b.ttf',\n",
       " 'mal2-n.ttf',\n",
       " 'malayalam.ttf',\n",
       " 'oriya.ttf',\n",
       " 'padmaa-Bold-0.5.ttf',\n",
       " 'padmaa-Medium-0.5.ttf',\n",
       " 'times.ttf',\n",
       " 'timesbd.ttf',\n",
       " 'timesbi.ttf',\n",
       " 'timesi.ttf',\n",
       " 'trebuc.ttf',\n",
       " 'trebucbd.ttf',\n",
       " 'trebucbi.ttf',\n",
       " 'trebucit.ttf',\n",
       " 'verdana.ttf',\n",
       " 'verdanab.ttf',\n",
       " 'verdanai.ttf',\n",
       " 'verdanaz.ttf',\n",
       " 'webdings.ttf',\n",
       " 'wqy-microhei.ttc']"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "geemap.system_fonts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2b50de0dd6724903867541ea7028138c",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "geemap.add_text_to_gif(in_gif, out_gif, xy=('5%', '5%'), text_sequence=1984, font_size=30, font_color='#0000ff', duration=100)\n",
    "geemap.add_text_to_gif(out_gif, out_gif, xy=('30%', '85%'), text_sequence=\"Las Vegas\",  font_type=\"timesbd.ttf\", font_size = 30, font_color='black')\n",
    "geemap.show_image(out_gif)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create GIF from Earth Engine data\n",
    "\n",
    "This example was adapted from the Earth Engine JavaScript API Documentation [here](https://developers.google.com/earth-engine/ic_visualization#video_thumb). "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Prepare for an ImageCollection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "import ee\n",
    "import geemap\n",
    "\n",
    "ee.Initialize()\n",
    "\n",
    "# Define an area of interest geometry with a global non-polar extent.\n",
    "aoi = ee.Geometry.Polygon(\n",
    "  [[[-179.0, 78.0], [-179.0, -58.0], [179.0, -58.0], [179.0, 78.0]]], None, False)\n",
    "\n",
    "# Import hourly predicted temperature image collection for northern winter\n",
    "# solstice. Note that predictions extend for 384 hours; limit the collection\n",
    "# to the first 24 hours.\n",
    "tempCol = ee.ImageCollection('NOAA/GFS0P25') \\\n",
    "  .filterDate('2018-12-22', '2018-12-23') \\\n",
    "  .limit(24) \\\n",
    "  .select('temperature_2m_above_ground')\n",
    "\n",
    "# Define arguments for animation function parameters.\n",
    "videoArgs = {\n",
    "  'dimensions': 768,\n",
    "  'region': aoi,\n",
    "  'framesPerSecond': 10,\n",
    "  'crs': 'EPSG:3857',\n",
    "  'min': -40.0,\n",
    "  'max': 35.0,\n",
    "  'palette': ['blue', 'purple', 'cyan', 'green', 'yellow', 'red']\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Save the GIF to local drive"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generating URL...\n",
      "Downloading data from https://earthengine.googleapis.com/v1alpha/projects/earthengine-legacy/videoThumbnails/84ac4395f47114a4b179b1a2ca8623da-894f3a078a528407f12624cfb36b1836:getPixels\n",
      "Please wait ...\n",
      "The GIF image has been saved to: /home/qiusheng/Downloads/temperature.gif\n"
     ]
    }
   ],
   "source": [
    "saved_gif = os.path.join(os.path.expanduser('~'), 'Downloads/temperature.gif')\n",
    "geemap.download_ee_video(tempCol, videoArgs, saved_gif)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "cf14248364d54820bdc1be1431bd7d72",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "geemap.show_image(saved_gif)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Generate an hourly text sequence"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00']\n"
     ]
    }
   ],
   "source": [
    "text = [str(n).zfill(2) + \":00\" for n in range(0, 24)]\n",
    "print(text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Add text to GIF"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "out_gif = os.path.join(os.path.expanduser('~'), 'Downloads/output2.gif')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "geemap.add_text_to_gif(saved_gif, out_gif, xy=('3%', '5%'), text_sequence=text, font_size=30, font_color='#ffffff')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "geemap.add_text_to_gif(out_gif, out_gif, xy=('32%', '92%'), text_sequence='NOAA GFS Hourly Temperature', font_color='white')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "664aa38a498a4aa9b508e6645b906c2c",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "geemap.show_image(out_gif)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
